// utils/safe-area.js
// 安全区域适配工具

/**
 * 获取安卓状态栏高度
 * @returns {number} 状态栏高度（px）
 */
export function getAndroidStatusBarHeight() {
  // 优先从本地存储获取
  const storedHeight = wx.getStorageSync('androidStatusBarHeight')
  if (storedHeight) {
    return storedHeight
  }
  
  // 从全局数据获取
  const app = getApp()
  if (app && app.globalData && app.globalData.androidStatusBarHeight) {
    return app.globalData.androidStatusBarHeight
  }
  
  // 默认值
  return 44
}

/**
 * 获取安全区域顶部高度
 * @returns {number} 安全区域顶部高度（px）
 */
export function getSafeAreaTop() {
  const systemInfo = wx.getSystemInfoSync()
  const safeArea = systemInfo.safeArea || {}
  
  // 如果有安全区域信息，使用安全区域顶部
  if (safeArea.top !== undefined) {
    return safeArea.top
  }
  
  // 否则使用状态栏高度
  return systemInfo.statusBarHeight || getAndroidStatusBarHeight()
}

/**
 * 获取安全区域底部高度
 * @returns {number} 安全区域底部高度（px）
 */
export function getSafeAreaBottom() {
  const systemInfo = wx.getSystemInfoSync()
  const safeArea = systemInfo.safeArea || {}
  
  if (safeArea.bottom !== undefined) {
    return systemInfo.windowHeight - safeArea.bottom
  }
  
  return 0
}

/**
 * 设置页面安全区域样式
 * @param {Object} pageInstance 页面实例
 */
export function setPageSafeArea(pageInstance) {
  const safeAreaTop = getSafeAreaTop()
  const safeAreaBottom = getSafeAreaBottom()
  
  pageInstance.setData({
    safeAreaTop: safeAreaTop,
    safeAreaBottom: safeAreaBottom,
    androidStatusBarHeight: getAndroidStatusBarHeight()
  })
}

/**
 * 获取导航栏高度
 * @returns {number} 导航栏高度（px）
 */
export function getNavBarHeight() {
  const systemInfo = wx.getSystemInfoSync()
  const menuButtonInfo = wx.getMenuButtonBoundingClientRect()
  const statusBarHeight = systemInfo.statusBarHeight || getAndroidStatusBarHeight()
  
  // 计算导航栏高度：状态栏 + 胶囊按钮高度 + 间距
  const navBarHeight = menuButtonInfo.bottom + menuButtonInfo.top - statusBarHeight
  
  return navBarHeight
} 